﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Practices.ObjectBuilder;
using GC2.Entities.Seguridad;
using GC2.Entities.Admin;
using GC2.Bussines.BMAdmin;

public partial class Proveedores_Pagos: GenericPage
{
    #region Propiedades

    private string scriptSession
    {
        get
        {
            return (string)Session["scriptSession"];
        }
        set
        {
            Session["scriptSession"] = value;
        }
    }

    private Param param = new Param();

    #endregion

    #region Controles

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                lblAccion.Text = "";
                btnOtro.Visible = false;             
                Proveedores proveedor = new Proveedores();
                List<Proveedores> listaProveedores = new List<Proveedores>();
                BMProveedores bmProveedores = new BMProveedores(Connection);
                listaProveedores = bmProveedores.BMProveedoresSearch(proveedor);
                Session["listaProveedores"] = listaProveedores;
                lblAccion.Text = "Seleccionar Proveedor";
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region txtIdProveedor_TextChanged
    protected void txtIdProveedor_TextChanged(object sender, EventArgs e)
    {
        try
        {
            txtSaldo.Text = "";
            BuscarProveedor();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnBuscarProveedor_Click
    protected void btnBuscarProveedor_Click(object sender, EventArgs e)
    {
        try
        {
            txtIdProveedor.Text = "";
            txtProveedor.Text = "";
            txtSaldo.Text = "";
            BuscarProveedor();
        }
        catch (Exception ex) { throw ex; }
    }
    #endregion

    #region btnGuardar_Click
    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        try
        {
            if (txtMonto.Text != "")
            {
                Guardar();
            }
            else
            {
                // mensaje monto cero
                mpeMonto.Show();
            }
        }
        catch (Exception ex) { throw ex; }
    }
    #endregion

    #region btnOtro_Click
    protected void btnOtro_Click(object sender, EventArgs e)
    {
        try
        {
            Limpiar();
        }
        catch (Exception ex) { throw ex; }
    }
    #endregion

    #region btnCancelar_Click
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        try
        {
            Response.Redirect("~/Seguridad/Default.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion

    #region Métodos

    #region BuscarProveedor
    public void BuscarProveedor()
    {
        try
        {
            List<Proveedores> listaProveedores = new List<Proveedores>();
            listaProveedores = (List<Proveedores>)Session["listaProveedores"];
            Proveedores proveedor = new Proveedores();
            if (txtIdProveedor.Text.Trim() != "")
            {
                proveedor.Id_Proveedor = Convert.ToInt16(txtIdProveedor.Text.Trim());
            }
            proveedor.Nombre = txtProveedor.Text.Trim();

            bool encontrado = false;
            foreach (Proveedores item in listaProveedores)
            {
                if (item.Id_Proveedor == proveedor.Id_Proveedor)
                {
                    txtIdProveedor.Text = item.Id_Proveedor.ToString();
                    txtProveedor.Text = item.Nombre;
                    txtSaldo.Text = item.Saldo.ToString();
                    encontrado = true;
                    break;
                }
                if (item.Nombre == proveedor.Nombre)
                {
                    txtIdProveedor.Text = item.Id_Proveedor.ToString();
                    txtProveedor.Text = item.Nombre;
                    txtSaldo.Text = item.Saldo.ToString();
                    encontrado = true;
                    break;
                }
            }

            if (!encontrado)
            {
                txtIdProveedor.Text = "";
                txtProveedor.Text = "";
                #region dispararPopUp(hacePostBack)

                string scriptSession = @"
            <script language=""javascript"" type=""text/javascript"">
            <!--
                function mostrarProveedor()
                {
                    var stringURL = '../Admin/BuscarProveedor.aspx?pStation=0';
                    var oINPUTS = document.getElementsByTagName (""INPUT"");
                    for(var a=0;a<oINPUTS.length; a++)
                    {
                        //Validaciones para cuando el control fue arrastrado a un PopUP (Sin MasterPage)

                        if(oINPUTS[a].getAttribute(""id"") == 'ct100_DefaultContent_txtIdConcepto')
                        {
                            alert('U1a: &IdConcepto = ' + oINPUTS[a].getAttribute(""value""));
                            stringURL = stringURL + '&Id_Concepto=' + oINPUTS[a].getAttribute(""value"");
                        }
                        if(oINPUTS[a].getAttribute(""id"") == 'ct100_DefaultContent_txtConcepto')
                        {  
                            //alert('U2a: &Concepto = ' + oINPUTS[a].getAttribute(""value""));
                            stringURL = stringURL + '&Concepto=' + oINPUTS[a].getAttribute(""value"");
                        }
                        if(oINPUTS[a].getAttribute(""id"") == 'ct100_DefaultContent_txtSaldo')
                        {  
                            alert('U3a: &Saldo = ' + oINPUTS[a].getAttribute(""value""));
                            stringURL = stringURL + '&Saldo=' + oINPUTS[a].getAttribute(""value"");
                        }
                    }
                    // alert(stringURL);
                    var newWin = window.open(stringURL, ""popup"", ""menubar=no, resizable=no, scrollbars=yes, height=450, width=550, left=100, top=100"");
                }
                mostrarProveedor();
            //-->
            </script>
            ";

                Page.ClientScript.RegisterStartupScript(this.GetType(), "ScriptA", scriptSession);
                #endregion
            }

        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region Guardar
    protected void Guardar()
    {
        try
        {
            Proveedores proveedor = new Proveedores();
            List<Proveedores> listaProveedores = new List<Proveedores>();
            BMProveedores bmProveedores = new BMProveedores(Connection);
            listaProveedores = (List<Proveedores>)Session["listaProveedores"];
            proveedor.Id_Proveedor = Convert.ToInt16(txtIdProveedor.Text.Trim());
            lblAccion.Text = "NO se pudo actualizar Saldo";

            for (int i = 0; i < listaProveedores.Count; i++)
            {
                if (listaProveedores[i].Id_Proveedor == proveedor.Id_Proveedor)
                {
                    // actualizar proveedor
                    proveedor = listaProveedores[i];
                    Decimal dMonto = Convert.ToDecimal(txtMonto.Text.Trim());
                    Decimal dSaldo = proveedor.Saldo - dMonto;
                    proveedor.Saldo = dSaldo;
                    bmProveedores.BMProveedoresUpdate(proveedor);
                    decimal decSaldo = Convert.ToDecimal(dSaldo);
                    decimal decTemp = Math.Round(decSaldo, 2);
                    txtSaldo.Text = decTemp.ToString();

                    // grabar egreso de caja
                    BMEgresos bmEgresos = new BMEgresos(Connection);
                    Egresos egreso = bmEgresos.BMEgresosGetNext();
                    egreso.Concepto = "Pago";
                    egreso.Fecha = System.DateTime.Now;
                    Cajas oCaja = new Cajas();
                    oCaja = (Cajas)Session["Caja"];
                    if (oCaja == null)
                    {
                        oCaja = CajaAbierta();
                    }
                    egreso.Id_Caja = oCaja.Id_Caja;
                    egreso.Id_Proveedor = proveedor.Id_Proveedor;
                    egreso.Id_Concepto = 0;
                    Usuarios usuario = UsuarioActual();
                    egreso.Id_Usuario = usuario.Id_Usuario;
                    egreso.Monto = dMonto;
                    egreso.Observaciones = txtObservaciones.Text.Trim();
                    bmEgresos.BMEgresosInsert(egreso);

                    btnGuardar.Visible = false;
                    btnOtro.Visible = true;
                    lblAccion.Text = "Saldo Actualizado";
                    Session["listaProveedores"] = listaProveedores;
                    break;
                }
            }      
        }
        catch (Exception ex) { throw ex; }
    }
    #endregion

    #region Limpiar
    protected void Limpiar()
    {
        try
        {
            txtIdProveedor.Text = "";
            txtProveedor.Text = "";
            txtSaldo.Text = "";
            txtMonto.Text = "";
            txtObservaciones.Text = "";
            lblAccion.Text = "Seleccionar Proveedor";
            btnOtro.Visible = false;
            btnGuardar.Visible = true;
        }
        catch (Exception ex) { throw ex; }
    }
    #endregion

    #endregion
}
